package com.dragon.modules.yuegou.enums.code;

import com.dragon.common.constant.enums.IBusinessCode;

import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * 会员业务状态码
 * 
 * @author 刘武
 *
 */
public enum MarketingCode implements IBusinessCode {

	/**
	 * 已存在进行中的活动
	 */
	ACTIVITY_NORMAL_EXISTS(25001, "已存在进行中的活动"),
	/**
	 * 该活动有效期结束时间不能小于当前时间
	 */
	ACTIVITY_ENDTIME(25002, "该活动有效期结束时间不能小于当前时间"),

	/**
	 * 助力数量不能大于商品库存量
	 */
	STOCK_NOT_ENOUGH(25003, "助力数量不能大于商品库存量"),

	/**
	 * 该状态不能停止
	 */
	NORMAL_STOP(25004, "该状态不能停止"),

	/**
	 * 助力成功超过三天不能购买，请重新发起助力
	 */
	BUY_TIME_OUT(25005, "助力成功超过三天不能购买，请重新发起助力"),

	/**
	 * 该助力已过期不能支付
	 */
	BUY_DENY(25006, "该助力已过期"),

	/**
	 * id不能为空
	 */
	ID_NOTNULL(25007, "id不能为空"),

	/**
	 * 商品不能为空
	 */
	SPU_NOTNULL(25009, "商品不能为空"),

	/**
	 * 状态码说明
	 */
	TODO(25000, "提示消息"),
	/**
	 * 助力活动已结束
	 */
	HELP_ACTIVITY_IS_END(25010, "助力活动已结束"),
	/**
	 * 助力价格需低于商品原价
	 */
	HELP_PRICE_LIMITED(25011, "助力价格需低于商品原价"),
	/**
	 * 间隔时间范围为0~168
	 */
	TIME_INTERVAL_RANGE(25012, "间隔时间范围为0~168"),
	/**
	 * 活动时间已过期
	 */
	ACTIVITY_IS_EXPIRED(25013, "活动时间已过期"),
	/**
	 * 广告上架数量不能超出商圈限制
	 */
	BANNER_QUANTITY_LIMITED(25014, "广告上架数量不能超出商圈限制"),
	/**
	 * 广告上架数量不能超出商圈限制
	 */
	HELP_DETAIL_IMGS_ERROR(25016, "详情图片地址无效"),
	/**
	 * 未配置商圈广告许可
	 */
	BANNER_QUANTITY_IS_NULL(25015, "未配置商圈广告许可"),
	/**
	 * 广告上架数量不能超出商圈限制
	 */
	DETAIL_IMGS_ERROR(25017, "图片地址无效"),
	/**
	 * 拼团限制购买
	 */
	GROUPON_MAX_BUY_LIMIT(25018, "您已超过限制购买次数"),
	/**
	 * 已成团
	 */
	ALREADY_GROUPON_SUCCESS(25019, "该拼团已经成团,无法参团"),
	/**
	 * 拼团活动信息更新库存失败
	 */
	GROUPON_UPDATE_STOCK_FAIL(25020, "更新库存失败"),
	/**
	 * 拼团活动信息已过期
	 */
	GROUPON_EXPIRED(25021, "拼团已过期"),

	/**
	 * 生成海报出错
	 */
	POSTER_GEN_FAIL(25022, "生成海报出错"),

	/**
	 * 生成海报出错
	 */
	MERCHANT_LEVEL_LOW(25023, "商户等级不够，需要升级才能创建活动"),
	GROUPON_ALREADY_JOIN(25024, "您已经参加过该拼团活动"),
	GROUPON_JOIN_SELF(25025, "不能参加自己的团"),
	GROUPON_REFUND_STATUS_ERROR(25026, "该订单状态不支持退款"),
	GROUPON_REFUND_NOT_SELF(25027, "只能退自己的订单"),
	/**
	 * 助力价格需低于商品原价
	 */
	GROUPON_PRICE_LIMITED(25028, "拼团价格需低于商品原价"),
	/**
	 * 未开启疯狂砍价功能
	 */
	BARGAIN_STATUS_OFF(25029, "您的商家等级未开启疯狂砍价功能"),
	/**
	 * 您的商家等级未开启全民拼团功能
	 */
	GROUPON_STATUS_OFF(25030, "您的商家等级未开启全民拼团功能"),
	/**
	 * 您的商家等级未开启全民拼团功能
	 */
	FLOOR_PRICE_LIMIT(25031, "该商品需要砍价到底价才能购买"),
	/**
	 * 参团人数已满
	 */
	GROUPON_JOIN_FULL(25032, "参团人数已满"),
	/**
	 * 添加拼团结束时间不能超过商品结束时间
	 */
	GROUPON_TIME_UNREASONABLE(25033,"添加拼团结束时间不能超过商品结束时间%s"),
	
	/**
	 * 未找到广告信息
	 */
	NOT_FIND_ADV(25034,"未找到广告信息"),

	IMAGE_SAVING_ERROR(25035,"网络忙，请稍后！"),
	
	ACTIVITY_QUANTYITY_CANNOT_BE_FREATER_THAN_COMMODITY_INVENTORY(25036,"活动数量不能大于商品库存！%s"),
	
	/**
	 * 添加拼团结束时间不能超过商品结束时间
	 */
	END_TIME_CANNOT_BE_GREATER_THAN_START_TIME(25037,"活动结束时间不能早于活动开始时间!"),
	
	/**
	 * 疯狂砍价结束时间不能超过商品结束时间
	 */
	HELP_TIME_UNREASONABLE(25038,"添加砍价结束时间不能超过商品结束时间%s"),
	
	HELP_VIEW_TIME_ERROR(25040,"活动展示时间错误"),
	
	HELP_TIME_ERROR(25041,"活动有效时间错误"),
	
	HELP_USE_TIME_ERROR(25042,"活动核销时间错误"),
	
	HELP_TIME_VAL_ERROR(25043,"活动时间配置错误"),
	
	VIEW_BEGIN_TIME_CANNOT_BE_GREATER_THAN_START_TIME(25044,"活动展示时间不能晚于活动开始时间!"),
	
	BUY_BEGIN_TIME_CANNOT_BE_GREATER_THAN_BEGIN_TIME(25045,"购买开始时间不能晚于活动核销开始时间!"),
	
	BUY_END_TIME_CANNOT_BE_GREATER_THAN_END_TIME(25046,"购买结束时间不能晚于活动核销结束时间!"),
	
    BEGIN_DATE_CANNOT_BE_GREATER_THAN_USE_BEGIN_TIME(25047,"活动开始时间不能晚于活动核销开始时间!"),
	
	END_DATE_CANNOT_BE_GREATER_THAN_USE_END_TIME(25048,"活动结束时间不能晚于活动核销结束时间!"),
	
	
	;

	private final Integer code;

	private final String message;

	private MarketingCode(Integer code, String message) {
		this.code = code;
		this.message = message;
	}

	public Integer getCode() {
		return code;
	}

	public String getMessage() {
		return message;
	}

	/**
	 * 把code转化为ResponseCode枚举
	 *
	 * @param code 代码
	 * @return
	 */
	public static MarketingCode from(Integer code) {
		if (code == null) {
			return null;
		}
		return CODE_MAP.get(code);
	}

	/**
	 * Code Map for ResponseCode
	 */
	private static final Map<Integer, MarketingCode> CODE_MAP = Stream.of(MarketingCode.values())
			.collect(Collectors.toMap(MarketingCode::getCode, e -> e));

}
